// 统一封装接口方法
import request from '@/utils/request'
import { getStorage } from '@/utils/storage'
// 既引入也同时向外按需导出,所有引入过来的方法(中转)
export * from './ArticleDetail'

// axios内部, 会把参数对象转成json字符串格式发后台
// axios内部, 会自动携带请求参数(headers)里 Content-Type:'application/json' 帮你添加好

// 登录 - 登录接口
export const loginAPI = ({ mobile, code }) => request({
  url: '/v1_0/authorizations',
  method: 'POST',
  data: {
    mobile, // 手机号
    code // 短信验证码,这里是6位数字的密码
  }
})

// 用户 - 刷新token
export const getNewTokenAPI = () => request({
  url: '/v1_0/authorizations',
  method: 'PUT',
  headers: {
    Authorization: 'Bearer ' + getStorage('refresh_token')
  }
})

// 用户 - 获取个人资料(编辑页面)
export const userProfileAPI = () => request({
  url: 'v1_0/user/profile'
})

// 用户 - 获取基本信息(我的页面显示数据)
export const getUserInfoAPI = () => request({
  url: '/v1_0/user'
})

// 用户 - 更新头像
export const updateUserPhotoAPI = (fd) => request({
  url: '/v1_0/user/photo',
  method: 'PATCH',
  data: fd // fd是外面一会儿传进来的new FormData() 表单对象
})

// 用户 - 更新基本资料
export const updateUserProfileAPI = (dataObj) => {
  // 判断,有什么值,再带什么参数给后台

  const obj = {
    name: '',
    gender: 0,
    birthday: '',
    intro: ''
  }
  for (const prop in obj) {
    if (dataObj[prop] === undefined) {
      delete obj[prop]
    } else {
      obj[prop] = dataObj[prop]
    }
  }

  return request({
    url: '/v1_0/user/profile',
    method: 'PATCH', // PATCH -> 局部更新    PUT -> 全部更新
    data: obj

  })
}

// 频道 - 获取所有频道
export const getAllChannelsAPI = () => request({
  url: '/v1_0/channels',
  method: 'GET'
})

// 频道 - 获取用户选择的频道
// 注意：用户没有登陆，默认返回后台设置的默认频道列表
export const getUserChannelsAPI = () => request({
  url: '/v1_0/user/channels'
})

// 频道 - 更新覆盖频道
export const updateChannelsAPI = ({ channels }) => request({
  url: '/v1_0/user/channels',
  method: 'PUT',
  data: {
    // 用户已选的整个频道数组
    channels
  }
})

// 频道 - 删除用户指定的频道
export const removeTheChannelAPI = ({ channelId }) => request({
  url: `/v1_0/user/channels/${channelId}`,
  method: 'DELETE'
})

// 文章 - 获取列表
export const getAllArticleListAPI = ({ channel_id, timestamp }) => request({
  url: '/v1_0/articles',
  method: 'GET',
  params: { // 这里的参数,axios会帮你拼接在URL?后面 (查询字符串)
    channel_id, // 频道ID
    timestamp // 时间戳，请求新的推荐数据传当前的时间戳，请求历史推荐传指定的时间戳

  }
})

// 文章 - 反馈 - 不感兴趣(不喜欢)
export const dislikeArticleAPI = ({ artId }) => request({
  url: '/v1_0/article/dislikes',
  method: 'POST',
  data: {
    target: artId // 不喜欢的文章id
  }
})

// 文章 - 反馈 - (举报文章)
export const reportArticleAPI = ({ artId, type, remark }) => request({
  url: '/v1_0/article/reports',
  method: 'POST',
  data: {
    // 举报的文章id
    target: artId,
    // 举报类型： 0-其他问题，1-标题夸张，2-低俗色情，3-错别字多，4-旧闻重复，5-广告软文，6-内容不实，7-涉嫌违法犯罪，8-侵权'
    // 其他问题 的附加说明
    type: type,
    remark: remark

  }
})

// 搜索 - 联想菜单列表
export const suggestListAPI = ({ keywords }) => request({
  url: '/v1_0/suggestion',
  params: {
    q: keywords
  }
})

// 搜索 - 搜索结果列表
export const searchResultAPI = ({ page = 1, per_page = 10, q }) => request({
  url: '/v1_0/search',
  params: {
    // 页数，不传默认为1
    page,
    // 每页数量，不传每页数量由后端决定
    per_page,
    // 搜索关键词
    q
  }
})
